package com.njit.mailm.core.service;

import com.njit.mailm.core.bean.Email;
import com.njit.mailm.core.bean.MessageWrap;
import com.njit.mailm.core.bean.Page;
import com.njit.mailm.core.bean.User;
import com.sun.mail.pop3.POP3Folder;

import javax.mail.Message;
import javax.mail.Store;
import java.util.List;
import java.util.Map;

public interface MailService {

	/**
	 * 同步对应邮箱的邮件
	 * @param email 邮箱对象那个
	 * @return 邮件列表
     */
	List<MessageWrap> synchrMail(Email email);

	/**
	 * 获得全部邮件
	 *
	 * @return 邮件列表
     */
	@Deprecated
	List<MessageWrap> listAll();

	/**
	 * 绑定邮箱
	 * @param email 邮箱对象
	 * @return 是否成功，成功true
     */
	boolean bindMail(Email email);

	/**
	 * 通过id查找邮件
	 * @param id id
	 * @return 邮箱对象
     */
	MessageWrap selectMessageById(String id);

	/**
	 * 分页显示
	 * @param page 分页
	 * @param email 邮件对象
     * @return 邮件列表
     */
	List<MessageWrap> pageList(Page page,Email email);

	/**
	 * 获得邮箱总数
	 * @param email 邮件对象
	 * @return 总数
     */
	int getMailTotal(Email email);

	/**
	 * 添加邮箱
	 * @param email 邮箱对象
	 * @return 是否成功，成功为true
     */
	boolean insertMail(Email email);

	/**
	 *	获得用户的所有邮箱信息
	 * @param user 用户对象
	 * @return 邮箱列表
     */
	List<Email> getEmailsByUser(User user);

	/**
	 * 通过id查找邮箱
	 * @param id 邮箱id
	 * @return 邮箱对象
     */
	Email getEmailById(String id);

	List<Message> getSynchronMessages(Email email);

	/**
	 * 批量更新邮件，每次更新10封邮件
	 * @param batchList
	 * @param email
     */
	Map<String,Object> batchSynchron(List<Message> batchList, Email email);


	void colseFolder(Store store, POP3Folder folder);

	Map<String,Object> intervalSynchron(List<Email> emails);
}
